package br.ucb.negocio;

import java.io.Serializable;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

/**
 * Super Entity Class
 * @author Alan Mortoni <mortoni.alan@hotmail.com>
 * 
 * usada para gerar o identificador único das entidades de banco de 
 * dados.
 * 
 * @version 1
 * Essa é uma classe abstrata
 * 
 * @version 2
 * Essa classe deve ser uma interface, pois assim representa melhor as 
 * boas práticas de programação.
 * 
 * 
 */
@MappedSuperclass
public abstract class EntidadeBase implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        
        if (obj == null){
             return false;
        } else if (!(obj instanceof EntidadeBase)){
             return false;
        } else if (((EntidadeBase) obj).id.equals(this.id)){
             return true;
        } else {
        	return false;
        }
    }

    @Override
    public String toString() {
        return "br.ucb.negocio.EntidadeBase[ id=" + id + " ]";
    }
}
